package org.dromara.nursing.domain.vo;

import org.dromara.common.translation.annotation.Translation;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.nursing.domain.MSContractInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;



/**
 * 合同信息视图对象 ms_contract_info
 *
 * @author Xue
 * @date 2025-04-23
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = MSContractInfo.class)
public class MSContractInfoVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 合同ID
     */
    @ExcelProperty(value = "合同ID")
    private Long contractId;

    /**
     * 合同编号
     */
    @ExcelProperty(value = "合同编号")
    private String contractNo;

    /**
     * 老人姓名
     */
    @ExcelProperty(value = "老人姓名")
    private String elderName;

    /**
     * 房间号
     */
    @ExcelProperty(value = "房间号")
    private String roomNumber;

    /**
     * 床位号
     */
    @ExcelProperty(value = "床位号")
    private String bedNumber;

    /**
     * 合同开始日期
     */
    @ExcelProperty(value = "合同开始日期")
    private Date startDate;

    /**
     * 合同结束日期
     */
    @ExcelProperty(value = "合同结束日期")
    private Date endDate;

    /**
     * 合同类型
     */
    @ExcelProperty(value = "合同类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_contract_type")
    private String contractType;

    /**
     * 月费用
     */
    @ExcelProperty(value = "月费用")
    private Long monthlyFee;

    /**
     * 押金
     */
    @ExcelProperty(value = "押金")
    private Long deposit;

    /**
     * 支付方式
     */
    @ExcelProperty(value = "支付方式", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_payment_method")
    private String paymentMethod;

    /**
     * 付款周期
     */
    @ExcelProperty(value = "付款周期", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "payment_cycle")
    private String paymentCycle;

    /**
     * 特殊条款
     */
    @ExcelProperty(value = "特殊条款")
    private String specialTerms;

    /**
     * 签名图片地址
     */
    @ExcelProperty(value = "签名图片地址")
    private String signatureImage;

    /**
     * 签名图片地址Url
     */
    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "signatureImage")
    private String signatureImageUrl;
    /**
     * 签署时间
     */
    @ExcelProperty(value = "签署时间")
    private Date signTime;

    /**
     * 合同状态
     */
    @ExcelProperty(value = "合同状态", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_contract_status")
    private String contractStatus;

    /**
     * 终止原因
     */
    @ExcelProperty(value = "终止原因")
    private String terminationReason;

    /**
     * 终止日期
     */
    @ExcelProperty(value = "终止日期")
    private Date terminationDate;

    /**
     * 联系人姓名
     */
    @ExcelProperty(value = "联系人姓名")
    private String contactName;

    /**
     * 联系人电话
     */
    @ExcelProperty(value = "联系人电话")
    private String contactPhone;

    /**
     * 是否同意协议
     */
    @ExcelProperty(value = "是否同意协议")
    private String agreementAccepted;

    /**
     * 同意协议时间
     */
    @ExcelProperty(value = "同意协议时间")
    private Date agreementTime;

    /**
     * 合同文件路径
     */
    @ExcelProperty(value = "合同文件路径")
    private String contractFilePath;

    /**
     * 审核人
     */
    @ExcelProperty(value = "审核人")
    private String reviewedBy;

    /**
     * 审核时间
     */
    @ExcelProperty(value = "审核时间")
    private Date reviewTime;

    /**
     * 审核状态
     */
    @ExcelProperty(value = "审核状态", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_review_status")
    private String reviewStatus;

    /**
     * 护理等级
     */
    @ExcelProperty(value = "护理等级", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_service_level")
    private String serviceLevel;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    private String remark;


}
